package com.ynet.middleground.user.service;

import java.util.List;

import javax.validation.Valid;

import com.ynet.core.common.BaseReqObjPager;
import com.ynet.core.common.ServiceResult;
import com.ynet.middleground.user.bean.*;
import com.ynet.middleground.user.dto.ChannelCompanyDTO;
import com.ynet.middleground.user.dto.ChannelDTO;

/**
 * @author liulx
 * @description 渠道公司关联服务
 * @date 2020-07-02 17:05
 */
public interface ChannelCompanyService {

    /**
     * 查询渠道对应公司列表
     *
     * @param req 查询渠道详情请求对象
     * @return 渠道关联公司信息列表
     */
    ServiceResult<List<ChannelCompanyDTO>> listByChannelCode(@Valid QueryChannelReq req);

    /**
     * 分页查询渠道关联的公司列表
     *
     * @param req 基础参数分页
     * @return 渠道关联公司列表
     */
    ServiceResult<List<ChannelCompanyDTO>> listPage(@Valid BaseReqObjPager req);

    /**
     * 添加公司
     *
     * @param req 添加渠道关联公司请求对象
     * @return 添加成功后的公司 id
     */
    ServiceResult<Integer> addCompany(@Valid AddChannelCompanyReq req);

    /**
     * 根据关联公司 id 查询详情
     *
     * @param req 查询基础对象
     * @return 渠道关联公司信息传输对象
     */
    ServiceResult<ChannelCompanyDTO> queryDetailById(@Valid QueryBaseReq req);

    /**
     * 根据关联公司代码查询详情
     *
     * @param req 查询渠道公司关系详情请求对象
     * @return 渠道关联公司信息传输对象
     */
    ServiceResult<ChannelCompanyDTO> getDetailByCompanyCode(@Valid QueryChannelCompanyReq req);

    /**
     * 更新渠道公司关联信息
     *
     * @param req 修改渠道关联公司请求对象
     * @return 结果以 success 字段为准, true 为修改成功， false 为修改失败
     */
    ServiceResult<Object> modify(@Valid UpdateChannelCompanyReq req);

    /**
     * 删除关联公司信息
     *
     * @param req 查询基础对象
     * @return 结果以 success 字段为准, true 为删除成功， false 为删除失败
     */
    ServiceResult<Object> delete(@Valid QueryBaseReq req);

}
